home *** CD-ROM | disk | FTP | other *** search
- #include "random.h"
-
- #ifndef _INC_CHROM_
- #define _INC_CHROM_
-
- class CGAChromosome
- {
- public:
- static void InitializeChromosomeClass(
- size_t Length);
- ~CGAChromosome();
- CGAChromosome(float Prob = 0.0);
-
- CGAChromosome* Compliment() const;
- void Mutate(float Prob);
- inline size_t GetLength() const;
- inline float GetFitness() const;
- friend void Crossover(CGAChromosome* Parent1,
- CGAChromosome* Parent2,
- CGAChromosome*& Child1,
- CGAChromosome*& Child2,
- float Prob);
- friend float CalcSimilarityRatio(
- CGAChromosome* Chrom1,
- CGAChromosome* Chrom2);
- inline GABool& operator[](size_t Idx);
-
- private:
- static void InitializeCrossoverMask(float Prob);
-
- static GABool* m_CrossoverMask;
- static size_t m_Count;
- static size_t m_Length;
- GABool* m_Data;
- float m_Fitness;
- };
-
- size_t CGAChromosome::GetLength() const
- {
- return m_Length;
- }
-
- float CGAChromosome::GetFitness() const
- {
- return m_Fitness;
- }
-
- GABool& CGAChromosome::operator[](size_t Idx)
- {
- return m_Data[Idx];
- }
-
- float CalcFitness(CGAChromosome* Chromosome);
-
- #endif
-